package com.atguigu.tingshu.search.service;

import com.atguigu.tingshu.query.search.AlbumIndexQuery;
import com.atguigu.tingshu.vo.album.AlbumDetailInfoVo;
import com.atguigu.tingshu.vo.search.AlbumChannelVo;
import com.atguigu.tingshu.vo.search.AlbumInfoIndexVo;
import com.atguigu.tingshu.vo.search.AlbumSearchResponseVo;

import java.util.List;

public interface SearchService {

    /**
     * @param @param albumId
     * @return
     * @name upperAlbum
     * @description 将指定专辑上架到索引库
     */
    void upperAlbum(Long albumId);

    /**
     * @param @param albumId
     * @return
     * @name lowerAlbum
     * @description 将指定专辑从索引库下架
     */
    void lowerAlbum(Long albumId);

    /**
     * @param @param albumIndexQuery
     * @return @return {@code AlbumSearchResponseVo }
     * @name searchAlbumInfo
     * @description 专辑信息检索
     */
    AlbumSearchResponseVo searchAlbumInfo(AlbumIndexQuery albumIndexQuery);

    /**
     * @param category1Id 一级分类ID
     * @param pageNo      页码
     * @return @return {@code List<AlbumChannelVo> }
     * @name findHotAlbum
     * @description 查询热门专辑（按热度排序）
     */
    List<AlbumChannelVo> findHotAlbum(Long category1Id, Integer pageNo);

    /**
     * @param keyword 关键词
     * @return @return {@code List<String> }
     * @name completeSuggest
     * @description 专辑标题自动补全
     */
    List<String> completeSuggest(String keyword);

    /**
     * @param @param albumId
     * @return @return {@code AlbumDetailInfoVo }
     * @name searchAlbumInfoDetail
     * @description 获取专辑详情
     */
    AlbumDetailInfoVo searchAlbumInfoDetail(Long albumId);

    /**
     * @param category1Id 一级分类ID
     * @param dimension   排行维度
     * @return @return {@code List<AlbumInfoIndexVo> }
     * @name findRankingList
     * @description 查询专辑排行榜
     */
    List<AlbumInfoIndexVo> findRankingList(Long category1Id, String dimension);
}
